#pragma once

/************************************************************************
* Array implemented as a Queue
* GSP295 Week2 iLab: FIFO Queue
* Author: Ronald Ram
************************************************************************/

#include <iostream>
#include <string>
using namespace std;

namespace GSP295_Wk2
{
	class QueueArray
	{
	private:
		int size, capacity, front, back;
		string *data;

		void Init();					//C004: Init data array

	public:
		QueueArray();						//C001: Default Constructor
		//QueueArray(QueueArray& queue);	//C002: Copy Constructor
		virtual ~QueueArray();				//C003: Destructor

		bool Enqueue(string item);			//M001: Add element to BACK of Queue
		bool Dequeue(string& output);		//M002: Remove element from front of Queue

		bool isEmpty() const;				//M003: Check if Queue is Empty
		bool isFull() const;				//M004: Check if Queue is Full
		void Clear();						//M005: Remove all elements from Queue
		void Print();						//M006: Print all elements in Queue
		int Capacity() const;				//M007: Max # of elements, queue can hold
		int Size() const;
	};
};